package com.sample.library

import android.view.View
import androidx.annotation.IdRes
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.LifecycleOwner

/**
 * Created by chenxz on 2018/4/21.
 */
interface IView {

    /**
     * 关闭当前页面
     */
    fun closePage()

    /**
     * 显示加载中视图
     */
    fun showLoading()

    /**
     * 显示空视图
     */
    fun showEmpty()

    /**
     * 显示错误视图
     */
    fun showError()

    /**
     * 显示无网络视图
     */

    fun showNoNetwork()

    /**
     * 显示内容视图
     */
    fun showContent()

    /**
     * 显示加载对话框
     */
    fun showLoadingDialog(desc: String)

    /**
     * 显示加载对话框(引用资源ID)
     */
    fun showLoadingDialog(resId: Int)

    /**
     * 更新加载对话框
     */
    fun updateLoadingDialog(progress: String)

    /**
     * 关闭加载对话框
     */
    fun dismissLoadingDialog()

    /**
     * 获取生命周期对象
     */
    fun getLifecycleOwner(): LifecycleOwner

    /**
     * 获取当前Context
     */
    fun withContext(): FragmentActivity?

    /**
     *传递一个事件,仅用于ViewModel与其对应的Fragment或Activity之间的事件传递
     * @param eventId 事件id
     */
    fun onEvent(eventId: Int)

    /**
     * 获取一个当前视图的View
     */
    fun <T : View> findViewWithId(@IdRes id: Int): T
}